1. Technical Field
The invention relates to Internet protocol networking in a computer environment. More particularly, the invention relates to the routing and load balancing of traffic in a Domain Name System in a computer environment.
2. Description of the Prior Art
Global traffic management systems are at the beginning formulative stages of development. Most systems do not have to manage a large amount of traffic. The systems either do not deal with persistence or synchronization of DNS servers or, if they do, they perform the tasks in a very inefficient and cumbersome way by shipping huge tables between servers.
Domain Name System (DNS) servers in the Internet and in Intranets are sent requests to determine machine IP addresses associated with a given name. DNS servers can perform load balancing by returning different IP addresses for different requests to a server and can also be modified to return IP addresses that are close to an end user in terms of latency.
For example, assume three IP addresses 1.1.1.1, 1.1.1.2 and 1.1.1.3 are valid IP addresses for www.speedera.com. When a DNS server receives a request for the IP address of www.speedera.com, it could return 1.1.1.1 for the first request, 1.1.1.2 request for the second address, etc. This would cause requests for www.speedera.com to be distributed among the three IP addresses and among three machines, if each IP address represents a different machine.
If the DNS server has access to information about the load on the three machines, it could return IP addresses based on machine load to perform load balancing intelligently. Also, if a DNS server has access to information about the latency between various points on the network, it can determine which IP address(es) to return based on the latency between the machine with that IP address and the machine where the request came from.
These features are commonly used in combination to create an advanced load balancing DNS server. More advanced DNS servers can provide support for xe2x80x9cpersistencexe2x80x9d. Some services, such as web shopping carts, require persistence.
xe2x80x9cPersistencexe2x80x9d is when the first time a request is made for an IP address of a hostname from a given user, a persistent entry is stored on the server that ties that user to the IP address. Subsequent requests from the same user for the IP address of the domain name first requested will return the same IP address that was returned the first time, as long as that IP address can handle the request.
To handle persistence, a DNS server can maintain a table that contains a mapping of machine IP addresses and hostnames to IP addresses. When processing a DNS request, the DNS server consults the table to determine if a persistent entry exists that ties a machine IP address (identifying a group of users) and hostname to IP address.
Persistent tables can be very large. Typically, when multiple DNS servers manage a hostname, each individual server needs access to the persistence table. This leads to a significant amount of network traffic overhead when the tables are kept synchronized between multiple servers.
Most existing approaches simply do not allow more than one load balancing DNS server to be authoritative for a given domain name when using persistence. Persistence is supported when only a single DNS server is authoritative for a given domain name in these approaches.
Other existing solutions that support persistence when more than one DNS server is authoritative for a given domain name, work by keeping all the persistence tables in the authoritative DNS servers synchronized. When a persistent entry is added or deleted, it must be added or deleted to all DNS servers that are authoritative for a given domain name.
Similarly, latency tables and other tables that are keyed off a user group (Client DNS Server) are either kept in a single location or are synchronized across multiple servers where the full latency table is kept on each server.
It would be advantageous to provide a scalable domain name system with persistence and load balancing that provides both persistence and load balancing on a DNS server and reduces the amount of information stored on the server. It would further be advantageous to provide a scalable domain name system with persistence and load balancing that reduces the traffic across the network when table synchronization is used.
The invention provides a scalable domain name system with persistence and load balancing. The system performs both load balancing and persistence tracking on a DNS server while reducing the amount of information stored on the DNS server. In addition, the invention reduces network traffic required for information synchronization between DNS servers.
A preferred embodiment of the invention receives requests from client DNS servers or other DNS servers. The invention checks to see if the client DNS server is part of the DNS group that the DNS server is authoritative. Each DNS server is associated with a subset of the DNS groups in the network.
If the DNS server is not authoritative for the client DNS server""s group, then the request is forwarded to the proper DNS server. Otherwise, the invention checks a persistence table to see if a persistent response is required for the request. If a persistent response is required, the appropriate IP address entry in the table is returned to the requester.
If a persistent response is not required, the invention determines the load, availability, and latency of the content servers from information stored in a latency table to determine the proper content server to reference. The proper content servers address is returned to the requestor.
The DNS server sends any responses to forwarded requests to the client DNS server.
When more than one DNS server is authoritative for an overlapping DNS group, the invention ensures that the persistence and latency tables are synchronized with any other DNS servers. The invention also allows the persistence and latency tables to be located on a set of table servers within the network.
Another aspect of the invention allows the DNS server that a request is forwarded to, to respond directly to the client. The client is redirected to the DNS server.